<?php

App::uses('AppController', 'Controller');

class ConvenioEnderecosController extends AppController {
	
	public function alterar($id = null){
		
		$this->set('title_for_layout', 'Endereços do Convênio :: Alterar');
		
		if ($this->request->data){
			
			if ($this->{$this->modelClass}->save($this->request->data)){
				
				$this->armazenar_endereco($this->request->data);				
				$this->Session->setFlash('Dados incluídos com sucesso.', 'default', array('class' => 'flashOk'));
				$this->redirect(array('controller' => 'convenios', 'action' => 'alterar', $this->request->data[$this->modelClass]['convenio_id']));
				
			} else {
				
				$this->Session->setFlash('Erro ao tentar incluir.', 'default', array('class' => 'flashError'));
				
			}
			
		} else {
			
			$this->{$this->modelClass}->id = $id;
			$this->request->data = $this->{$this->modelClass}->read();
			
		}
		
		$this->loadModel('Cidade');		
		
		$this->set('cidades', $this->Cidade->get_list_cidades());		
		$this->set('tipo_endereco', $this->ConvenioEndereco->carregar_tipo_endereco());	
		$this->set('nome_convenio', $this->{$this->modelClass}->Convenio->field('nome', array('id' => $this->request->data[$this->modelClass]['convenio_id'])));

	}
	
	public function armazenar_endereco($request) {
		
		$this->loadModel('Endereco');

		$this->Endereco->create();

		$dados = array();

		$dados['Endereco']['cep'] 			= $request[$this->modelClass]['endereco_cep'];
		$dados['Endereco']['logradouro'] 	= $request[$this->modelClass]['endereco_logradouro']; 
		$dados['Endereco']['bairro'] 		= $request[$this->modelClass]['endereco_bairro']; 
		$dados['Endereco']['cidade_id'] 	= $request[$this->modelClass]['cidade_id']; 
		
		$this->Endereco->armazenar_endereco($dados);

	}	
	
	public function excluir($id = null){
		
		try {
			$this->{$this->modelClass}->delete($id);
			$this->Session->setFlash('Registro excluído com sucesso!', 'default', array('class' => 'flashOk'));
		} catch (Exception $e) {
			$this->Session->setFlash('Não é possível excluir porque existem referências no sistema!', 'default', array('class' => 'flashError'));
		}
		
		$this->redirect($this->referer());

	}	
	
	public function grid($convenio_id = null) {

		$this->autoRender = false;

		$conditions['convenio_id'] = $convenio_id;
		
		if ($this->request->data['query'] != '') {
			$conditions[$this->request->data['qtype'] . ' ILIKE'] = '%' . str_replace(' ', '%', $this->request->data['query']) . '%';
		}

		$this->paginate = array(
            'page' => $this->request->data['page'],
            'limit' => $this->request->data['rp'],
            'order' => array($this->request->data['sortname'] => $this->request->data['sortorder']),
            'conditions' => $conditions,
			'maxLimit' => 1000,
			'recursive' => 0
		);

		$results = $this->paginate($this->modelClass);

		$data = array();
		$data['page'] = $this->request->data['page'];
		$data['total'] = $this->{$this->modelClass}->find('count', array('conditions' => $conditions));
		$data['rows'] = array();
		
		$cidades = $this->{$this->modelClass}->Cidade->find('list');
		$estados = $this->{$this->modelClass}->Cidade->Estado->find('list', array('fields' => array('id', 'sigla')));
		$tipos_endereco = $this->{$this->modelClass}->carregar_tipo_endereco();
		
		foreach($results as $rs) {
			$data['rows'][] = array(
		        'id' => $rs[$this->modelClass]['id'],
		        'cell' => array(
					$rs[$this->modelClass]['id'],
					$tipos_endereco[$rs[$this->modelClass]['tipo']],	
					$rs[$this->modelClass]['endereco_cep'],				
					$rs[$this->modelClass]['endereco_logradouro'],
					$rs[$this->modelClass]['endereco_numero'],
					$rs[$this->modelClass]['endereco_complemento'],
					$rs[$this->modelClass]['endereco_bairro'],
					$cidades[$rs[$this->modelClass]['cidade_id']],
					$estados[$rs['Cidade']['estado_id']]
				)
			);
		}

		return json_encode($data);
	}
	
	public function incluir($convenio_id = null){
		
		$this->set('title_for_layout', 'Endereços do Convênio :: Incluir');
		
		if ($this->request->data){
			
			if ($this->{$this->modelClass}->save($this->request->data)){
				
				$this->Session->setFlash('Dados incluídos com sucesso.', 'default', array('class' => 'flashOk'));
				$this->redirect(array('controller' => 'convenios', 'action' => 'alterar', $this->request->data[$this->modelClass]['convenio_id']));
				
			} else {
				
				$this->Session->setFlash('Erro ao tentar incluir.', 'default', array('class' => 'flashError'));
				
			}
		} else {
			
			$this->request->data[$this->modelClass]['convenio_id'] = $convenio_id;
			
		}
		
		$this->loadModel('Cidade');		
		
		$this->set('cidades', $this->Cidade->get_list_cidades());
		$this->set('nome_convenio', $this->{$this->modelClass}->Convenio->field('nome', array('id' => $this->request->data[$this->modelClass]['convenio_id'])));
		$this->set('tipo_endereco', $this->ConvenioEndereco->carregar_tipo_endereco());	
	}

}